package com.shihb.chapter03oop

/**
 * scala构造器
 */
object Demo03Constructor {
  def main(args: Array[String]): Unit = {
    val person = new Person("jake", 20)
    val shb = new Person("shb")
    val person1 = new Person(3)
    println(shb.toString)
    println(person.toString)
    println(person1.toString)
  }

}
//构造器
//1.如果主构造器是Person(inName:String,inAge:Int)
//那么inName,inAge就是局部变量
//2.Person(val inName:String,var inAge:Int)加了val|var
//那么inName就是这个类的私有只读属性(val)
//那么inAge就是这个类的私有可读写属性(var)

class Person(inName:String,inAge:Int){//主构造器
  var name:String = inName
  var age:Int = inAge
  def this(name:String){
    //辅助构造器，必须在第一行直接或者间接调用主构造器
    // 直接调用主构造器
    this("jack",10)
    this.name=name
  }
  def this(age:Int){
    //辅助构造器，必须在第一行直接或者间接调用主构造器
    //间接调用主构造器
    this("wyh")
    this.age=age
  }


  override def toString = s"Person($name, $age)"


}
